package com.night.icm.service.business.service;

import com.night.icm.common.night_enum.StudyStatus;
import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.common.utils.TermType;
import com.night.icm.model.business.StudentCourseDTO;

/**
 * StudentCourseService
 *
 * @author Liao ZhiYong
 * @date 2020/2/15
 */
public interface StudentCourseService {

    /**
     * 分页查找选课信息
     *
     * @param page        页号，从0开始
     * @param size        每页记录条数
     * @param sort        排序字段，例如：字段1,asc,字段2,desc
     * @param studentId   所属学生
     * @param courseName  课程名称
     * @param teacherName 授课老师
     * @param year        所属年度
     * @param termType    所属学期
     * @param studyStatus 修读状态
     * @return 选课信息
     */
    PageDataDTO<StudentCourseDTO> findOnePage(int page, int size, String sort, String studentId, String courseName, String teacherName, String year, TermType termType, StudyStatus studyStatus);

    /**
     * 添加选课信息
     *
     * @param studentCourseDTO 选课信息
     * @return 选课信息
     */
    StudentCourseDTO create(StudentCourseDTO studentCourseDTO);

    /**
     * 删除选课信息
     *
     * @param id 选课id
     */
    Boolean delete(String id);

    /**
     * 更新选课信息
     *
     * @param id               选课id
     * @param studentCourseDTO 选课信息
     * @return 选课信息
     */
    StudentCourseDTO update(String id, StudentCourseDTO studentCourseDTO);

    /**
     * 根据id查找选课信息
     *
     * @param id 选课id
     * @return 选课信息
     */
    StudentCourseDTO findById(String id);
}
